Immutable Borrowing (ইমিউটেবল বোরোউ)
Immutable borrowing হল একটি প্রক্রিয়া যেখানে আপনি কোনো ভেরিয়েবল বা ডেটার রেফারেন্স (reference) গ্রহন করেন, কিন্তু সেই ডেটা পরিবর্তন (mutate) করার অনুমতি পান না। এতে, আপনি শুধু ডেটার মান পড়তে পারেন কিন্তু পরিবর্তন করতে পারবেন না।
- ব্যবহার: এটি সাধারণত তখন ব্যবহার করা হয় যখন আপনি একটি ভেরিয়েবলের মান পরিবর্তন না করে, শুধুমাত্র সেই মানটি পড়তে চান।
- সীমাবদ্ধতা: একাধিক ইমিউটেবল রেফারেন্স একই সময়ে থাকতে পারে, কারণ একসাথে একাধিক রেফারেন্স ডেটাকে কেবল পড়তে পারে, পরিবর্তন করতে পারে না।
উদাহরণ:
fn main() {
let s = String::from("Hello");
let r1 = &s; // Immutable borrow
let r2 = &s; // Immutable borrow
println!("{}", r1); // Allowed
println!("{}", r2); // Allowed
}এখানে, r1 এবং r2 উভয়ই একই ডেটার immutable রেফারেন্স গ্রহণ করেছে, এবং আমরা কোনো সমস্যা ছাড়াই তাদের থেকে ডেটা পড়তে পারি। কিন্তু ডেটা পরিবর্তন করা যাবে না।
Mutable Borrowing (মিউটেবল বোরোউ)
Mutable borrowing হল একটি প্রক্রিয়া যেখানে আপনি কোনো ভেরিয়েবল বা ডেটার মিউটেবল রেফারেন্স (mutable reference) গ্রহন করেন, যার মাধ্যমে আপনি সেই ডেটা পরিবর্তন (mutate) করতে পারেন।
- ব্যবহার: এটি তখন ব্যবহৃত হয় যখন আপনাকে ডেটার মান পরিবর্তন করার প্রয়োজন পড়ে।
- সীমাবদ্ধতা: এক সময়ে শুধুমাত্র একটি মিউটেবল রেফারেন্স থাকতে পারে, কারণ একাধিক মিউটেবল রেফারেন্স থাকলে ডেটার অবস্থা অস্থির হতে পারে, যার ফলে data race সৃষ্টি হতে পারে।
উদাহরণ:
fn main() {
let mut s = String::from("Hello");
let r1 = &mut s; // Mutable borrow
r1.push_str(", world!"); // Allowed
println!("{}", r1); // Allowed
}এখানে, r1 একটি মিউটেবল রেফারেন্স, যা আমরা ব্যবহার করে ডেটার মান পরিবর্তন করতে পারি। তবে, একসাথে আর কোনো মিউটেবল রেফারেন্স থাকতে পারে না।
মূল পার্থক্য:
- Immutable Borrowing: একাধিক immutable রেফারেন্স থাকতে পারে, কিন্তু আপনি ডেটার মান পরিবর্তন করতে পারবেন না। এটি নিরাপদভাবে ডেটা শেয়ার করার জন্য ব্যবহৃত হয়।
- Mutable Borrowing: শুধুমাত্র একটি mutable রেফারেন্স থাকতে পারে, এবং এই রেফারেন্সের মাধ্যমে আপনি ডেটা পরিবর্তন করতে পারবেন। এটি ডেটা রেস প্রতিরোধ করতে সাহায্য করে, কারণ একসাথে একাধিক পরিবর্তনযোগ্য রেফারেন্স থাকা সম্ভব নয়।
সারাংশ
- Immutable borrowing-এ একাধিক রেফারেন্স থাকতে পারে এবং ডেটা পরিবর্তন করা যাবে না।
- Mutable borrowing-এ একমাত্র একটি রেফারেন্স থাকতে পারে, এবং আপনি সেই ডেটা পরিবর্তন করতে পারেন।
Read more